#ifndef CORE_WINDOW_H
#define CORE_WINDOW_H

#include "Common/Common.h"
#include "Point.h"
#include "Size.h"
#include "Color.h"

namespace core
{

class IWindowListener;

class Window
{
private:
	static Vector<IWindowListener*> _listeners;

public:

	enum Mode
	{
		Windowed, Fullscreen
	};

	static Point GetPosition( );
	static void SetPosition( const Point& pos );

	static Size GetSize( );
	static void SetSize( const Size& size );

	static const char* GetTitle( );
	static void SetTitle( const char* title );

	static Mode GetMode( );
	static void SetMode( const Mode& mode );

	static bool IsOpened( );
	static bool IsActive( );
	static bool IsIconified( );

	static void Create( const Point& position, const Size& size, const char* title, const Mode& mode, const Color& backgroundColor );
	static void Destroy( );

	static void Open( );
	static void Update( );
	static void Close( );
	static void Iconify( );
	static void Restore( );

	static void Resized( const Size& size );
	static void Closed( );
	static void Refreshed( );

	static void AddListener( IWindowListener* listener );
	static void RemoveListener( IWindowListener* listener );

private:
	static const char* _title;
	static Point _position;
	static Size _size;
	static Mode _mode;
};
}
#endif	/* WINDOW_H */

